home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / rexx / imc / rexx-imc.5 / README.make < prev    next >
Encoding:
Text File  |  1993-06-25  |  13.9 KB  |  321 lines

  1.                  Installation of REXX/imc
  2.  
  3. Summary:
  4.  
  5. The REXX/imc sources, written in C, are compiled into object files and
  6. linked into executables.  The executables may be installed into a binaries
  7. directory or left in the current directory.  The object files will always be
  8. moved into the binaries directory, but may be removed after the installation
  9. process (the binaries directory will be chosen at compilation time, but may
  10. be left as "." - i.e., the current directory).  After installation, the
  11. executables may be moved by the user, and REXX/imc may be told where to find
  12. these files by setting the environment variable REXXIMC - otherwise REXX/imc
  13. will search for these files itself.
  14.  
  15. The following instructions apply mainly to SunOS, but see the notes
  16. following the instructions for installation on other systems.
  17.  
  18. Prerequisites:
  19.  
  20. Please first determine and note down the following information.
  21. It will be needed in the following sections.
  22.  
  23.  - Which compiler to use ("gcc" or Sun "cc").
  24.  
  25.    NOTE:  The "cc" compiler is used as the linker in both cases.  This is
  26.    because our version of gcc does not appear to know about the -ldl library.
  27.  
  28.  - If the compiler is "gcc", determine the path name to the "gcc" command,
  29.    and the name of the directory in which the GNU library file "libgcc.a"
  30.    resides.  The latter is needed to set the GNUDIR variable within the make
  31.    file (current value: /usr/local/lib/gnu/gcc/sun?/2.*).
  32.  
  33.  - The name of a "binaries" directory.  This data will be stored in the
  34.    BINDIR environment variable, and the named directory will be used to
  35.    store the following files:
  36.  
  37.    calc.o rexx.o rxfn.o shell.o types.o util.o
  38.        [these are the object files, which may be removed after installation,
  39.        if desired]
  40.  
  41.    rexx rxmathfn.rxfn rxque rxstack
  42.        [these are the REXX/imc binaries which will be installed]
  43.  
  44.    rxmathfn.exec
  45.        [this file is optional and is not required on Sun systems; the notes
  46.        for compiling on other systems will tell you to install rxmathfn.exec]
  47.  
  48.    NOTE:  The "Make" program will first try the BINDIR value.  BINDIR may be
  49.       left undefined if desired; in that case, "Make" will try
  50.       $HOME/`arch`.  Failing that, it will use the current directory.
  51.  
  52.    NOTE:  When a user invokes "rexx", then the final value of REXXIMC saved
  53.       at compile time will be used to find the other REXX/imc files when
  54.       "rexx" is invoked by a user.  However, the final location may have
  55.       been unknown at compile-time, or the REXX/imc binaries may be
  56.       moved at some time after compilation.  In that case the user may
  57.       optionally set REXXIMC in his environment - otherwise, REXX/imc
  58.       will search for the files itself.
  59.       
  60.    NOTE:  If executables came with this distribution, then /usr/local/bin is
  61.       the name of the directory which is compiled in.  Initialisation
  62.       will be most efficient if the binaries are moved to /usr/local/bin, 
  63.       or if the user sets REXXIMC to the correct directory before
  64.       running "rexx".  This is not essential, however.
  65.  
  66.    The value of REXXIMC which is saved at compile time will usually be the
  67.    name of the binaries directory (mentioned above).  That will usually be
  68.    the most convenient option.  However, if you plan to move the REXX/imc
  69.    binaries after making them and know the final location, then note down
  70.    this location in order to set the environment variable REXXIMC before
  71.    compilation.  Then, "Make" will compile this new location into REXX/imc.
  72.  
  73. Customizing the "Make" file:
  74.  
  75.  - Change to the directory containing the REXX/imc source files.
  76.  
  77.  - Copy the "Make.orig" file as "Make".
  78.    This way you can always restart from scratch with a fresh
  79.    copy of the "Make.orig" file.
  80.  
  81.    NOTE: the capital M in "Make" serves to distinguish this program from the
  82.    Unix utility, "make".  You may use any other name you choose, provided it
  83.    does not conflict with a name that is already used.  If you use the name
  84.    "make", then you may execute it by typing "./make" instead of just "make".
  85.  
  86.  - Edit the file "Make" with your favorite editor.
  87.  
  88.  - If you will be compiling using "gcc", then:  Locate the line starting
  89.    with "GNUDIR=".  Erase all text after the "=" character and type in the
  90.    path to the GNU library on your machine.  Note that the backticks and the
  91.    word "echo" are only required when the directory contains wildcard
  92.    characters.  This step is not required when compiling using "cc".
  93.    In many cases, you can get away by just typing ".", since "cc" already
  94.    knows where to find the file "libgcc.a".
  95.  
  96.  - Locate the line starting with "CC=".  If you opted to use "cc" instead of
  97.    "gcc", then replace the whole path with "cc".  Else modify the specified
  98.    path to reflect the correct path to "gcc" itself on your machine.
  99.  
  100.  - If you wish to use other options for the compiler than the
  101.    values specified in the "Make" file, locate the line with:
  102.       *) CCFLAG=-O2;LDFLAG="-s -n -Bdynamic";;
  103.    shortly after the line starting with "CC=", and insert your preferred
  104.    options instead of (or as well as) the string "-O2".
  105.  
  106.    NOTE: you will usually need to surround the compiler flags with quotes:
  107.    for example,
  108.       *) CCFLAG="-O2 -Wall -v -pipe";LDFLAG="-s -n -Bdynamic";;
  109.  
  110.    Instead of changing this line, you may add extra compiler flags by
  111.    altering the definition of MORECCFLAGS.
  112.  
  113.  - If you wish to change the linker options, then replace the string
  114.    "-s -n -Bdynamic" in the above-mentioned line with your preferred
  115.    options.  These flags will be passed to "cc" which will, in turn, pass
  116.    them to "ld".
  117.  
  118.    NOTE:  The linker options are configured to create smaller executables
  119.       (with flags -n -s -Bdynamic) for minimal use of disk space.  If
  120.       executables came with this distribution, then they might have been
  121.       linked with more usual flags.
  122.  
  123.  - File the "Make" file.
  124.  
  125. Creating environment variables needed when running "Make":
  126.  
  127.  - If your choice for the location of the REXX/imc binaries after
  128.    compilation is other than $HOME/`arch` (or if non-existant the current
  129.    directory), then set the environment variable BINDIR to the value you
  130.    wish it to be.
  131.  
  132.  - If you are opting to move the REXX/imc binaries after compilation to a
  133.    known final location, then set the environment variable REXXIMC to that
  134.    value.
  135.  
  136. Running the "Make" file:
  137.  
  138. A more detailed description on what the "Make" file can do is written at the
  139. end of this file; however, the following information suffices for normal
  140. installation.
  141.  
  142. You can choose between full or partial installation.  The partial
  143. installation can be useful in running tests before moving the files to their
  144. final location.
  145.  
  146.  - For partial installation, simply type:
  147.       Make
  148.    This creates the executables, but leaves them in the current directory.
  149.    It will, however, move the object files (that is, the six files ending
  150.    with .o) into the binaries directory in case they are needed again later.
  151.  
  152.  - For full installation, type:
  153.       Make install
  154.    This will move the binary files as well as the object files to the
  155.    (final) location as specified by BINDIR.
  156.  
  157.    NOTE:  If any "Warning" options (such as "-W") are given to gcc,
  158.           various warnings may be issued.  I'm sorry!
  159.  
  160. Cleanup of work files:
  161.  
  162. IMPORTANT:
  163.    If there are files in the current directory you do not want to lose, do
  164.    NOT type this command; it will delete ALL executables and ".o" files in
  165.    the current directory.  It will also delete ALL ".o" files from the
  166.    "binaries" directory.
  167.  
  168. Type:
  169.    Make clobber
  170.  
  171. This will delete all ".o" files from the current directory and from the
  172. binaries directory.  It will also delete (from the current directory) the
  173. executables rexx, rxque, rxstack and rxmathfn.rxfn, and any editor backup
  174. files (ending with "^" or "%") which were made from editing any of the
  175. following files: *.c *.h Make rexx.ref rexx.summary rexx.info rexx.tech.
  176. REXX/imc executables which have been installed into a binaries directory
  177. (other than the current directory) will not be erased.
  178.  
  179. Alternatively, you may type:
  180.    Make clean
  181.  
  182. This will do the same cleanup as described above, except that it will only
  183. erase files which are in the current directory.
  184.  
  185. Test run "rexx".
  186.  
  187. Final disposition of binaries and doc files:
  188.  
  189.  - Move the doc files to their final location.  The documentation files are
  190.    listed in the files README and README.docs
  191.  
  192.  - If you opted for partial installation, then move the following
  193.    files to their final location:
  194.       rexx, rxque, rxstack, rxmathfn.rxfn
  195.  
  196. Final notes:
  197.  
  198. 1: If you have opted to let the users specify where to find the REXX/imc
  199.    binaries, then inform them of the fact that they may optionally set the
  200.    REXXIMC environment variable before "rexx" can be invoked.
  201.  
  202. 2: Also inform the users of the location of the documentation on
  203.    REXX/imc.
  204.  
  205. Notes on compiling REXX/imc on systems other than SunOS:
  206.  
  207. REXX/imc should compile OK on a Sun workstation.  I have also incorporated a
  208. port to AIX 3.2 which was done by Ignacio Reguero <reguero@sunsoft.cern.ch>
  209. (for gcc) and Yossie Silverman <yossie@ucsfvm.ucsf.edu> (for cc) and had a
  210. report that REXX/imc can also be ported to ULTRIX 4.2.  Further, I hope that
  211. REXX/imc may be compiled on any BSD-like platform.  You may find that the
  212. socket libraries of System V UNIX are insufficient for, or incompatible
  213. with, REXX/imc in its current form.  However, many System V systems do have
  214. extension libraries which may be sufficient.  Please do try and let me know
  215. what happens.
  216.  
  217. The macros MORECCFLAGS and LIBRARIES defined in the Make file should be
  218. defined to indicate the available features/requirements of your system.  For
  219. instance, REXX/imc requires signed characters, so the -fsigned-char flag may
  220. be required in MORECCFLAGS.  Preprocessor macros which may be defined in
  221. MORECCFLAGS are:
  222.  
  223.    NO_LDL       the system does not have the functions dlopen(), dlsym(),
  224.                 dlclose(), dlerror() for dynamic loading.  The effect of
  225.             defining NO_LDL will be to remove support for external
  226.             compiled functions.
  227.    HAS_MALLOPT  The malloc library has the function mallopt() as in SunOS
  228.    HAS_TTYCOM   The system requires <sys/ttycom.h> to be included before
  229.                 the TIOCGWINSZ ioctl can be used, as in SunOS
  230.    NO_CNT    Do not use the hack of inspecting fp->_cnt (where fp is a
  231.                 FILE pointer) to find the number of characters read but not
  232.         returned to the program.
  233.    STUFF_STACK  Stuff surplus stacked data into the keyboard buffer before
  234.                 terminating the stack.  The <sys/termios.h> file should define
  235.         a TIOCSTI ioctl call.
  236.  
  237. Possible libraries which might be required are -ldl (for the dynamic loading
  238. functions), -lbsd (for systems with BSD compatibility librries, as in AIX),
  239. -lsocket, and so on.
  240.  
  241. If you define NO_LDL, you will not be able to use compiled function
  242. packages, such as rxmathfn.rxfn (the math library).  This file should be
  243. removed from the binaries directory.  However, it will still be possible to
  244. use external functions written in Rexx.  You will be able to use the REXX
  245. math library by copying the Rexx file rxmathfn.exec into the binaries
  246. directory.
  247.  
  248.  
  249. The REXX/imc installation instructions were written with the kind help of
  250. Scott Ophof.
  251.  
  252. ------------------------
  253.  
  254. Make file description:
  255.  
  256. The full syntax for invoking Make is:
  257.  
  258.    Make [letter] [targets]
  259.  
  260. where "letter" is a single letter from [adgnop] and "targets" is one or more
  261. of the targets which are defined in the Make file.  The single-letter option
  262. is a convenient way of altering the compilation environment without having
  263. to use separately customised Make files, and they are currently set up as
  264. follows:
  265.  
  266.  a  uses cc with the "-a" flag to compile a version of REXX/imc which will
  267.     output profiling statistics when executed.
  268.  d  uses the "-g" compilation flag and also defines the DEBUG preprocessor
  269.     macro in order to make a debug version of REXX/imc with memory tracing.
  270.  g  uses the "-g" compilation flag to produce an ordinary debug version of
  271.     REXX/imc.
  272.  n  uses no compiler flags at all, which reduces compilation time at the cost
  273.     of making REXX/imc slightly slower.
  274.  o  uses optimisation flags to produce faster, smaller executables.
  275.  p  uses the "-p" compiler flag to compile a version of REXX/imc which will
  276.     output profiling statistics when executed.
  277.  
  278. If the single-letter option is omitted, then the flags are defined by the
  279. line of the Make file which starts with "*)".  This is ordinarily the same
  280. as typing the "o" option.
  281.  
  282. Note that by default "Make" will not recompile objects which have already
  283. been compiled, even if they were compiled with a different set of flags.
  284.  
  285. The possible targets to Make are listed below.  Note that unless otherwise
  286. stated all object files are moved to the binaries directory and all other
  287. files are left in the current directory.
  288.  
  289. all:     (same as omitting the target entirely)
  290.          compile the executables rexx, rxstack, rxque and rxmathfn
  291. install: compile as for "all" and move the executables into the binaries
  292.          directory.
  293. rexx:    compile the "rexx" executable
  294.          (Note that compiling the "rexx" executable implies compiling the six
  295.       objects rexx.o, rxfn.o, calc.o, util.o, shell.o and types.o)
  296. rxque:   compile the "rxque" executable
  297. rxstack: compile the "rxstack" executable
  298. rex:     compile rexx.o
  299. rxfn:    compile rxfn.o
  300. calc:    compile calc.o
  301. util:    compile util.o
  302. shell:   compile shell.o
  303. math:    compile the "rxmathfn.rxfn" executable
  304. clean:   erase all "junk" files from the current directory, as described
  305.          earlier
  306. clobber: erase all "junk" files from the current directory and also all
  307.          object files from the binaries directory, as described earlier
  308. lint:    run all the source files through "lint", accumulating the messages
  309.          into a file (called /tmp/lint)
  310.  
  311. More than one target may be named on the command line, but mixing "clean"
  312. and "clobber" with other options is sure to lead to surprises!
  313.  
  314. ------------------------
  315.  
  316. REXX/imc is copyright, but free.  Permission is granted to use, copy
  317. and redistribute this code, provided that the same permission is
  318. granted to all recipients, and that due acknowledgement is given to
  319. the author.
  320.  
  321.